Object-Level, Field-Level, এবং Record-Level Security Salesforce-এ ডেটা অ্যাক্সেস নিয়ন্ত্রণের তিনটি স্তর, যা ব্যবহারকারীর প্রোফাইল, ভূমিকা, এবং অনুমতি অনুযায়ী ডেটা অ্যাক্সেস নিয়ন্ত্রণ করে। এই তিনটি স্তরের নিরাপত্তা নিশ্চিত করে যে ব্যবহারকারী শুধু প্রয়োজনীয় এবং অনুমোদিত ডেটা দেখতে এবং অ্যাক্সেস করতে পারবেন।
1. Object-Level Security
Object-Level Security ব্যবহারকারীর নির্দিষ্ট অবজেক্টে (যেমন Account, Contact, Opportunity ইত্যাদি) অ্যাক্সেস নির্ধারণ করে। এই নিরাপত্তা স্তরটি নির্ধারণ করে যে ব্যবহারকারী কোন অবজেক্টে CRUD (Create, Read, Update, Delete) অপারেশন করতে পারবেন।
Object-Level Security কনফিগার করার উপায়
- Profiles and Permission Sets: প্রোফাইল এবং পারমিশন সেট ব্যবহার করে Object-Level Security কনফিগার করা হয়। এতে নির্দিষ্ট অবজেক্টে অনুমোদন ও অ্যাক্সেস নিয়ন্ত্রণ করা যায়।
Apex Code-এ Object-Level Security যাচাই
Apex কোডে Object-Level Security যাচাই করতে Schema.sObjectType.<Object>.isAccessible(), isCreateable(), isUpdateable(), এবং isDeletable() মেথড ব্যবহার করা হয়।
উদাহরণ: Object-Level Security যাচাই
public class AccountService {
public void createAccount(Account acc) {
if (Schema.sObjectType.Account.isCreateable()) {
insert acc;
} else {
throw new CustomException('Insufficient permissions to create Account.');
}
}
}
- isCreateable(): এখানে যাচাই করা হয়েছে যে ব্যবহারকারীর Account অবজেক্টে রেকর্ড তৈরি করার অনুমতি আছে কি না।
2. Field-Level Security
Field-Level Security নির্দিষ্ট ফিল্ডের উপর অ্যাক্সেস নিয়ন্ত্রণ করে, যা নির্ধারণ করে ব্যবহারকারী কোন ফিল্ড দেখতে, তৈরি করতে, আপডেট করতে পারবেন। এটি Object-Level Security এর উপর একটি বাড়তি স্তর যা ফিল্ড ভিত্তিক অ্যাক্সেস নিয়ন্ত্রণ করে।
Field-Level Security কনফিগার করার উপায়
- Profiles and Permission Sets: প্রোফাইল এবং পারমিশন সেটের মাধ্যমে Field-Level Security কনফিগার করা যায়, যা নির্দিষ্ট ফিল্ডগুলোতে অ্যাক্সেস প্রদান করে।
Apex Code-এ Field-Level Security যাচাই
Apex কোডে Field-Level Security যাচাই করতে Schema.sObjectType.<Object>.fields.<Field>.isAccessible(), isCreateable(), এবং isUpdateable() মেথড ব্যবহার করা হয়।
উদাহরণ: Field-Level Security যাচাই
public class AccountService {
public void updateAccountIndustry(Account acc) {
if (Schema.sObjectType.Account.fields.Industry.isUpdateable()) {
update acc;
} else {
throw new CustomException('Insufficient permissions to update Industry field.');
}
}
}
- isUpdateable(): এখানে যাচাই করা হয়েছে যে ব্যবহারকারীর Account অবজেক্টের
Industryফিল্ড আপডেট করার অনুমতি আছে কি না।
3. Record-Level Security
Record-Level Security নির্দিষ্ট রেকর্ডের উপর অ্যাক্সেস নিয়ন্ত্রণ করে। এটি নির্ধারণ করে ব্যবহারকারী কোন রেকর্ড দেখতে, সম্পাদনা করতে বা মুছে ফেলতে পারবেন। Record-Level Security ডেটা শেয়ারিং মডেলের উপর ভিত্তি করে কাজ করে এবং প্রোফাইল, পারমিশন সেট, বা রোল হায়ারার্কির উপর নির্ভর করে।
Record-Level Security কনফিগার করার উপায়
- Organization-Wide Defaults (OWD): প্রতিটি অবজেক্টের জন্য ডিফল্ট অ্যাক্সেস স্তর সেট করে, যা নির্ধারণ করে ব্যবহারকারী কোন রেকর্ড দেখতে বা সম্পাদনা করতে পারবেন।
- Role Hierarchies: উর্ধ্বতন কর্তৃপক্ষের জন্য নিচের স্তরের রেকর্ড অ্যাক্সেসের অনুমতি প্রদান করে।
- Sharing Rules: নির্দিষ্ট ব্যবহারকারী বা রোলের জন্য রেকর্ড শেয়ারিং রুলস তৈরি করা যায়।
- Manual Sharing: ব্যবহারকারীর নিজস্ব রেকর্ড অন্য ব্যবহারকারীর সাথে শেয়ার করার অনুমতি।
Apex Code-এ Record-Level Security যাচাই
Record-Level Security যাচাই করতে Apex ক্লাসে with sharing বা without sharing কিওয়ার্ড ব্যবহার করা হয়।
- with sharing: Apex ক্লাসে শেয়ারিং নিয়ম মেনে চলার নির্দেশ দেয়।
- without sharing: শেয়ারিং নিয়ম এড়িয়ে সমস্ত রেকর্ডে অ্যাক্সেস প্রদান করে।
উদাহরণ: Record-Level Security
public with sharing class AccountService {
public List<Account> getUserAccounts() {
return [SELECT Id, Name FROM Account];
}
}
- with sharing: এখানে
with sharingকিওয়ার্ড ব্যবহার করে নিশ্চিত করা হয়েছে যে ক্লাসটি শেয়ারিং নিয়ম মেনে চলবে এবং শুধু ব্যবহারকারীর অনুমোদিত রেকর্ডগুলোই অ্যাক্সেস করতে পারবে।
Object-Level, Field-Level, এবং Record-Level Security এর পার্থক্য
| নিরাপত্তা স্তর | উদ্দেশ্য | কনফিগারেশন উপায় | Apex কোড যাচাই |
|---|---|---|---|
| Object-Level Security | অবজেক্টের উপর CRUD অপারেশন নিয়ন্ত্রণ করে | Profiles এবং Permission Sets | isCreateable(), isAccessible(), isUpdateable() |
| Field-Level Security | নির্দিষ্ট ফিল্ডে এক্সেস নিয়ন্ত্রণ করে | Profiles এবং Permission Sets | isAccessible(), isCreateable(), isUpdateable() |
| Record-Level Security | নির্দিষ্ট রেকর্ডে এক্সেস নিয়ন্ত্রণ করে | OWD, Role Hierarchies, Sharing Rules | with sharing, without sharing |
Apex কোডে Security Best Practices
Object-Level এবং Field-Level Security যাচাই করুন: প্রতিটি SOQL এবং DML অপারেশনের আগে Object-Level এবং Field-Level Security যাচাই করুন।
if (Schema.sObjectType.Account.isAccessible() && Schema.sObjectType.Account.fields.Name.isAccessible()) {
Account acc = [SELECT Id, Name FROM Account LIMIT 1];
}
with sharing ব্যবহার করুন: যেখানে সম্ভব with sharing ব্যবহার করুন, যাতে ক্লাসে শেয়ারিং নিয়ম মেনে ডেটা অ্যাক্সেস নিশ্চিত করা যায়।
Exception Handling: যথাযথ Exception Handling যুক্ত করুন এবং অনুমতি না থাকলে ব্যবহারকারীকে Custom Error Message প্রদান করুন।
Minimal Permissions: প্রোফাইল এবং পারমিশন সেটে ন্যূনতম প্রয়োজনীয় পারমিশন প্রদান করুন।
Custom Permissions ব্যবহার করুন: কোডের নির্দিষ্ট অংশে এক্সেস নিয়ন্ত্রণের জন্য Custom Permissions ব্যবহার করতে পারেন।
সারসংক্ষেপ
Object-Level, Field-Level, এবং Record-Level Security Salesforce প্ল্যাটফর্মে ডেটা অ্যাক্সেস নিয়ন্ত্রণের বিভিন্ন স্তর, যা ডেটা সুরক্ষা নিশ্চিত করে। প্রোফাইল, পারমিশন সেট, এবং শেয়ারিং নিয়ম ব্যবহার করে প্রতিটি স্তরের নিরাপত্তা নিশ্চিত করা হয়। Object-Level Security নির্দিষ্ট অবজেক্টে CRUD অ্যাক্সেস নিয়ন্ত্রণ করে, Field-Level Security নির্দিষ্ট ফিল্ডের উপর ভিত্তি করে এক্সেস নিয়ন্ত্রণ করে, এবং Record-Level Security নির্দিষ্ট রেকর্ডের উপর ভিত্তি করে ডেটা এক্সেস নিয়ন্ত্রণ নিশ্চিত করে। নিরাপদ ও সুরক্ষিত কোড নিশ্চিত করতে এই সিকিউরিটি নিয়মগুলো মেনে Apex কোড লিখতে হবে।
Read more